package com.qinggeng.project.tool.pay.domain;

import com.qinggeng.framework.aspectj.lang.annotation.Excel;
import com.qinggeng.framework.web.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;

/**
 * 微信支付信息对象 pay_wxpay
 *
 * @author qinggeng
 * @date 2020-02-14
 */
@Data
public class PayWxpay extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    private Long payId;

    /** 微信支付订单号 */
    @Excel(name = "微信支付订单号")
    private String transactionId;

    /** 微信退款单号 */
    @Excel(name = "微信退款单号")
    private String refundId;

    /** 商户系统内部订单号 */
    @Excel(name = "商户系统内部订单号")
    private String outTradeNo;

    /** 商户系统内部的退款单号 */
    @Excel(name = "商户系统内部的退款单号")
    private String outRefundNo;

    /** 用户在商户appid下的唯一标识 */
    @Excel(name = "用户在商户appid下的唯一标识")
    private String openid;

    /** 订单总金额，单位为分 */
    @Excel(name = "订单总金额，单位为分")
    private Integer totalFee;

    /** 退款总金额,单位为分 */
    @Excel(name = "退款总金额,单位为分")
    private Integer refundFee;

    /** 商品简单描述 */
    @Excel(name = "商品简单描述")
    private String body;

    /** 商品详细描述 */
    @Excel(name = "商品详细描述")
    private String detail;

    /** 交易状态 */
    @Excel(name = "交易状态")
    private String tradeStatus;

    /** 交易类型 */
    @Excel(name = "交易类型")
    private String tradeType;

    /** 交易创建时间

 */
    @Excel(name = "交易创建时间 ", width = 30, dateFormat = "yyyy-MM-dd")
    private Date gmtCreate;

    /** 交易付款时间 */
    @Excel(name = "交易付款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date gmtPayment;

    /**
交易退款时间 */
    @Excel(name = "交易退款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date gmtRefund;

    /**
交易结束时间 */
    @Excel(name = "交易结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date gmtClose;


    public Long getPayId() {
        return payId;
    }

    public void setPayId(Long payId) {
        this.payId = payId;
    }

    public String getTransactionId() {
        return transactionId;
    }

    public void setTransactionId(String transactionId) {
        this.transactionId = transactionId;
    }

    public String getRefundId() {
        return refundId;
    }

    public void setRefundId(String refundId) {
        this.refundId = refundId;
    }

    public String getOutTradeNo() {
        return outTradeNo;
    }

    public void setOutTradeNo(String outTradeNo) {
        this.outTradeNo = outTradeNo;
    }

    public String getOutRefundNo() {
        return outRefundNo;
    }

    public void setOutRefundNo(String outRefundNo) {
        this.outRefundNo = outRefundNo;
    }

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public Integer getTotalFee() {
        return totalFee;
    }

    public void setTotalFee(Integer totalFee) {
        this.totalFee = totalFee;
    }

    public Integer getRefundFee() {
        return refundFee;
    }

    public void setRefundFee(Integer refundFee) {
        this.refundFee = refundFee;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public String getTradeStatus() {
        return tradeStatus;
    }

    public void setTradeStatus(String tradeStatus) {
        this.tradeStatus = tradeStatus;
    }

    public String getTradeType() {
        return tradeType;
    }

    public void setTradeType(String tradeType) {
        this.tradeType = tradeType;
    }

    public Date getGmtCreate() {
        return gmtCreate;
    }

    public void setGmtCreate(Date gmtCreate) {
        this.gmtCreate = gmtCreate;
    }

    public Date getGmtPayment() {
        return gmtPayment;
    }

    public void setGmtPayment(Date gmtPayment) {
        this.gmtPayment = gmtPayment;
    }

    public Date getGmtRefund() {
        return gmtRefund;
    }

    public void setGmtRefund(Date gmtRefund) {
        this.gmtRefund = gmtRefund;
    }

    public Date getGmtClose() {
        return gmtClose;
    }

    public void setGmtClose(Date gmtClose) {
        this.gmtClose = gmtClose;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("payId", getPayId())
            .append("transactionId", getTransactionId())
            .append("refundId", getRefundId())
            .append("outTradeNo", getOutTradeNo())
            .append("outRefundNo", getOutRefundNo())
            .append("openid", getOpenid())
            .append("totalFee", getTotalFee())
            .append("refundFee", getRefundFee())
            .append("body", getBody())
            .append("detail", getDetail())
            .append("tradeStatus", getTradeStatus())
            .append("tradeType", getTradeType())
            .append("gmtCreate", getGmtCreate())
            .append("gmtPayment", getGmtPayment())
            .append("gmtRefund", getGmtRefund())
            .append("gmtClose", getGmtClose())
            .toString();
    }
}
